package com.qiu.aiteacherbacker.config;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;


/**
    1. 在接口内部使用 @ApiIgnore 注解忽略不需要生成文档的接口

 * @date 2023/10/14 15:04
 */
@Configuration
@EnableSwagger2    //开启 Swagger2
@EnableAutoConfiguration
@ConditionalOnProperty(name = "swagger.enable", matchIfMissing = true)
public class SwaggerConfig {

//    如果要创建第二个分组，只需要再创建一个 Docket 实例即可
    @Bean
    public Docket docket() {
        // 创建一个 swagger 的 bean 实例
        return new Docket(DocumentationType.SWAGGER_2)
                // 配置基本信息
                .apiInfo(apiInfo())
                // 分组
                .groupName("AI")
                // 选择哪些接口作为 swagger 的文档生成对象
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.qiu.aiteacherbacker.controller"))
                .paths(PathSelectors.any())

//                .paths(PathSelectors.ant("/api/**"))   // 只匹配 `/api/**` 路径的接口
//                .paths(PathSelectors.none())          // 不匹配任何接口

                .build();
    }

    /**
     * 基本信息设置
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // 标题
                .title("AI接口")
                // 描述
                .description("AI接口文档")
                // 服务条款链接
                .termsOfServiceUrl("https://gitee.com/lqy125130")
                .contact(new Contact(
                        "QIU",
                        "https://gitee.com/lqy125130", "1977995433@qq.com"))
                // 版本号
                .version("1.0")
                .build();
    }


}
